// Central list of free objects of a given size.
typedef struct MCentral
{
	Lock;
	int32 sizeclass;
	MSpan nonempty;
	MSpan empty;
	int32 nfree;
} MCentral;

// central free lists for small size classes.
// the union makes sure that the MCentrals are
// spaced CacheLineSize bytes apart, so that each MCentral.Lock
// gets its own cache line.
union {
	MCentral;
	byte pad[CacheLineSize];
} runtime_mcentral[NumSizeClasses];

void	runtime_MCentral_Init(MCentral *c, int32 sizeclass);
int32	runtime_MCentral_AllocList(MCentral *c, int32 n, MLink **first);
void	runtime_MCentral_FreeList(MCentral *c, int32 n, MLink *first);
